﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace AcademiaInteligenteData.DAL
{
    class DaoDieta : DaoConnection
    {
        public void InserirDieta(Dieta dieta)
        {
            string insertDieta = "ai_sp_inserirDieta";
            List<SqlParameter> parametros = new List<SqlParameter>();

            parametros.Add(new SqlParameter("@id", dieta.id));
            parametros[0].Direction = System.Data.ParameterDirection.InputOutput;
            parametros.Add(new SqlParameter("@id_academia", dieta.id_academia));            
            parametros.Add(new SqlParameter("@id_cliente", dieta.id_cliente));
            parametros.Add(new SqlParameter("@id_funcionario", dieta.id_funcionario));                     
            parametros.Add(new SqlParameter("@id_alimentacao", dieta.id_alimentacao));            
            Executar(insertDieta, true, parametros);
            dieta.id = Convert.ToInt32(parametros[0].Value);
        }
        public void AlterarDieta(Dieta dieta)
        {
            string alterarDieta = "ai_sp_alterarDieta";
            List<SqlParameter> parametros = new List<SqlParameter>();

            parametros.Add(new SqlParameter("@id", dieta.id));
            parametros.Add(new SqlParameter("@id_academia", dieta.id_academia));
            parametros.Add(new SqlParameter("@id_cliente", dieta.id_cliente));
            parametros.Add(new SqlParameter("@id_funcionario", dieta.id_funcionario));
            parametros.Add(new SqlParameter("@id_alimentacao", dieta.id_alimentacao));
            
            Executar(alterarDieta, true, parametros);
        }
        public void ExcluirDietaPorID(int id)
        {
            string excluirDieta = "ai_sp_excluirDieta";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id", id));
            Executar(excluirDieta, true, parametros);
        }
        public List<Dieta> SelecionarDieta(int idAlimentacao, int idAcademia)
        {
            string selecionaDieta = "ai_sp_selecionarDieta";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id_academia", idAcademia));
            parametros.Add(new SqlParameter("@id_alimentacao", idAlimentacao)); 
            DataSet reader = Selecionar(selecionaDieta, true, parametros);
            
            List<Dieta> dietas = new List<Dieta>();
            for (int i = 0; i < reader.Tables[0].Rows.Count; i++)
            {
                Dieta dieta = new Dieta();                
                dieta.id_academia = Convert.ToInt32(reader.Tables[0].Rows[i]["id_academia"]);
                dieta.id_funcionario = Convert.ToInt32(reader.Tables[0].Rows[i]["id_funcionario"]);
                dieta.id_cliente = Convert.ToInt32(reader.Tables[0].Rows[i]["id_cliente"]);
                dieta.id_alimentacao = Convert.ToInt32(reader.Tables[0].Rows[i]["id_alimentação"]);
                dieta.id = Convert.ToInt32(reader.Tables[0].Rows[i]["id"]);
                
                dietas.Add(dieta);
            }
            return dietas;
        }


        public List<Dieta> ListarDietas()
        {
            string listaDieta = "ai_sp_listarDieta";
            List<SqlParameter> parametros = new List<SqlParameter>();
            DataSet reader = Selecionar(listaDieta, true, parametros);
            List<Dieta> dietas =  new List<Dieta>();
            for (int i = 0; i < reader.Tables[0].Rows.Count; i++)
            {
                Dieta dieta = new Dieta();
                dieta.id_alimentacao = Convert.ToInt32(reader.Tables[0].Rows[i]["id_alimentacao"]);
                dieta.id_academia = Convert.ToInt32(reader.Tables[0].Rows[i]["id_academia"]);
                dieta.id_cliente = Convert.ToInt32(reader.Tables[0].Rows[i]["id_cliente"]);
                dieta.id_funcionario = Convert.ToInt32(reader.Tables[0].Rows[i]["id_funcionario"]);        
                dieta.id = Convert.ToInt32(reader.Tables[0].Rows[i]["id"]);
                dietas.Add(dieta);
            }
            return dietas;
        }

        public Dieta SelecionarDietaPorID(int id)
        {
            string selecionaDietaPorId = "ai_sp_selecionarDietaPorID";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id", id));
            DataSet reader = Selecionar(selecionaDietaPorId, true, parametros);
            int i = 0;
            Dieta dieta = new Dieta();
            dieta.id_academia = Convert.ToInt32(reader.Tables[0].Rows[i]["id_academia"]);
            dieta.id_alimentacao = Convert.ToInt32(reader.Tables[0].Rows[i]["id_alimentacao"]);
            dieta.id_cliente = Convert.ToInt32(reader.Tables[0].Rows[i]["id_cliente"]);
            dieta.id_funcionario = Convert.ToInt32(reader.Tables[0].Rows[i]["id_funcionario"]);            
            dieta.id = id;
            return dieta;
        }


        public List<Dieta> ListarDietaPorCliente(int idDieta, int idCliente)
        {
            string selecionaDieta = "ai_sp_ListarDietaCliente";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id_dieta", idDieta));
            parametros.Add(new SqlParameter("@id_cliente", idCliente));
            DataSet reader = Selecionar(selecionaDieta, true, parametros);

            List<Dieta> dietas = new List<Dieta>();
            for (int i = 0; i < reader.Tables[0].Rows.Count; i++)
            {
                Dieta dieta = new Dieta();
                dieta.id = Convert.ToInt32(reader.Tables[0].Rows[i]["id"]);
                dieta.Academia.Id = Convert.ToInt32(reader.Tables[0].Rows[i]["id_academia"]);
                dieta.Cliente.Nome = Convert.ToString(reader.Tables[0].Rows[i]["cliente"]);
                dieta.Funcionario.Nome = Convert.ToString(reader.Tables[0].Rows[i]["funcionario"]);
                dieta.id_alimentacao = Convert.ToInt32(reader.Tables[0].Rows[i]["id_alimentacao"]);                                
                dieta.Cliente.Id = idCliente;
                dietas.Add(dieta);
            }
            return dietas;
        }

        public void InserirAlimentacaoDieta(int idAlimentacao, int idDieta)
        {
            string selecionaDieta = "ai_sp_inserirAlimentacaoDieta";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id_dieta", idDieta));
            parametros.Add(new SqlParameter("@id_alimentacao", idAlimentacao));
            Executar(selecionaDieta, true, parametros);
        }


        internal void RemoverAlimentacaoDieta(int idAlimentacao, int idDieta)
        {
            string selecionaDieta = "ai_sp_removerAlimentacaoDieta";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id_dieta", idDieta));
            parametros.Add(new SqlParameter("@id_alimentacao", idAlimentacao));
            Executar(selecionaDieta, true, parametros);
        }
    }
}
